//
// Created by myrica on 2/21/25.
//

#ifndef TOOLS_H
#define TOOLS_H

#include <string>
#include <iostream>

[[noreturn]] inline void unreachable(const std::string &reason) {
    std::cerr << "unreachable: " << reason << '\n';
    std::abort();
}

[[noreturn]] inline void unimplemented(const std::string &what) {
    std::cerr << "unimplemented: " << what << '\n';
    std::abort();
}

inline void warn(const std::string &warning) {
    std::cerr << "\033[33m[Warn]\033[0m: " << warning << '\n';
}

#endif //TOOLS_H
